#ifndef CHOOSEFRIENDDIALOG_H
#define CHOOSEFRIENDDIALOG_H

#include <QDialog>
#include <QWidget>
#include <QHBoxLayout>
#include <QScrollArea>
#include <QScrollBar>
#include <QCheckBox>
#include <QLabel>
#include <QPushButton>
#include <QPaintEvent>
#include <QPainter>
#include <QEnterEvent>
#include <QPainterPath>

class chooseFriendDialog;
/*********************************
 * 选择好友窗口中的一个 元素/好友项
 ********************************/
class ChooseFriendItem : public QWidget
{
    Q_OBJECT
public:
    ChooseFriendItem(const QString& userId,chooseFriendDialog* owner,const QIcon& avatar,const QString& name,bool checked);

    void paintEvent(QPaintEvent* event) override;

    void enterEvent(QEnterEvent* event) override;

    void leaveEvent(QEvent* event) override;

    const QString& getUserId() const { return userId; }

    QCheckBox* getCheckBox(){ return checkBox; }
private:
    bool isHover = false;

    QCheckBox* checkBox;
    QPushButton* avatarBtn;
    QLabel* nameLabel;
    chooseFriendDialog* owner;  // 记录了哪个 QWidget 持有了这个 Item. 此处的 QWidget 应该是一个 ChooseFriendDialog

    QString userId;   					// 记录了当前 Item 对应的 userId 是啥.
};

/*********************************
 * 选择好友窗口
 ********************************/

class chooseFriendDialog : public QDialog
{
    Q_OBJECT
public:
    chooseFriendDialog(QWidget* parent);

    void initTotal(QHBoxLayout* layout);
    void initSelected(QHBoxLayout* layout);

    void addFriend(const QString& userId,const QIcon& avatar,const QString& name,bool checked);

    void addSelectedFriend(const QString& userId,const QIcon& avatar,const QString& name,bool checked);

    void delSelectedFriend(const QString& userId);

    // 绘制圆角
    void paintEvent(QPaintEvent *event) override;
private:
    // 保存左侧全部好友列表的 QWidget
    QWidget* totalContainer;
    // 保存右侧选中好友列表的 QWidget
    QWidget* selectedContainer;

};

#endif // CHOOSEFRIENDDIALOG_H
